/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.openide.text; import javax.swing.text.*; import javax.swing.event.*; import org.openide.util.WeakListener; /** Position that stays at the same place if someone inserts * directly to its offset. * * @author Jaroslav Tulach */ class BackwardPosition extends Object implements Position, DocumentListener { /** positions current offset */ private int offset; /** Constructor. */ private BackwardPosition(int offset) { this.offset = offset; } /** @param doc document * @param offset offset * @return new instance of the position */ public static Position create (Document doc, int offset) { BackwardPosition p = new BackwardPosition (offset); doc.addDocumentListener (WeakListener.document (p, doc)); return p; } // // Position // /** @return the offset */ public int getOffset () { return offset; } // // document listener // /** Updates */ public void insertUpdate(DocumentEvent e) { // less, not less and equal if (e.getOffset () < offset) { offset += e.getLength (); } } /** Updates */ public void removeUpdate(DocumentEvent e) { int o = e.getOffset (); if (o < offset) { offset -= e.getLength (); // was the position in deleted range? => go to its beginning if (offset < o) { offset = o; } } } /** Nothing */ public void changedUpdate(DocumentEvent e) { } } /* * Log * 4 src-jtulach1.3 11/5/99 Jaroslav Tulach WeakListener has now * registration methods. * 3 src-jtulach1.2 10/22/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 2 src-jtulach1.1 6/8/99 Ian Formanek ---- Package Change To * org.openide ---- * 1 src-jtulach1.0 1/29/99 Jaroslav Tulach * $ */